package com.jxw.test.application.service.handler;

import com.jxw.boot.user.domain.DeviceUser;
import com.jxw.test.application.base.strategy.StrategyType;
import com.jxw.test.application.base.strategy.annotation.Strategy;
import com.jxw.test.application.base.strategy.handler.BaseStrategyHandler;
import com.jxw.test.application.domain.model.DeviceBindRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * 设备信息解析处理器
 * 策略注解，包含
 *  - type：策略类型
 *  - el：策略表达式（不写策略表达式，表示为默认策略）
 */
@Component
@Slf4j
@Strategy(type = StrategyType.DEVICE_INFO_PARSE,
        el = "#value.controlType == 2")
public class DeviceInfoStrategyHandler2 extends BaseStrategyHandler<DeviceBindRequest, DeviceUser> {

    /**
     * 核心业务方法
     *
     * @param deviceBindRequest
     */
    @Override
    protected DeviceUser doHandler(DeviceBindRequest deviceBindRequest) {
        log.info("【获取设备信息】模拟使用 Redis缓存 获得设备信息！");
        //获取设备数据
        String deviceData = deviceBindRequest.getDeviceData();
        //模拟解析
        DeviceUser deviceUser = new DeviceUser();
        deviceUser.setId(30000L);
        return deviceUser;
    }
}
